“Cloud” computing is a term often used to refer to the provisioning of computing resources as a service, usually by a number of computer servers that are networked together at a location remote from the location from which the services are requested. A cloud datacenter typically refers to the physical arrangement of servers that make up a cloud or a particular portion of a cloud. For example, servers can be physically arranged in the datacenter into rooms, groups, rows, and racks. A datacenter may have one or more “zones,” which may include one or more rooms of servers. Each room may have one or more rows of servers, and each row may include one or more racks. Each rack may include one or more individual server nodes. Servers in zones, rooms, racks, and/or rows may be arranged into virtual groups based on physical infrastructure requirements of the datacenter facility, which may include power, energy, thermal, heat, and/or other requirements.
As the popularity of cloud computing grows, customers are increasingly requiring cloud service providers to include service-level agreements (SLAs) within the terms of their contracts. Such SLAs require cloud service providers to agree to provide the customer with at least a certain level of service, which can be measured by one or more metrics (e.g., system uptime, throughput, etc.). SLA goals (including service delivery objective (SDO) and service level objective (SLO) goals), efficiency targets, compliance objectives, energy targets including facilities, and other environmental and contextual constraints may also all be considered. In order to meet such agreements, it is important for cloud service providers to optimally allocate customer workloads among multiple physical servers and/or multiple nodes or resources on the same server. Typically, however, such allocation is based on what resources are available when a new or pending workload is generated and does not take into account the probability of hardware failure, which may cause a service provider to fail to satisfy an SLA.
Black box optimization has been applied in a number of domains, but there are still many situations where computational optimization has not been successfully applied due to the dynamic evolving nature of the problem and the need for human in-the-loop-planners and/or controllers. Conventional optimization algorithms may deal well with hard constraints, for example cutting and packing algorithms (e.g., determining the most profitable combination of physical goods stored in a standard shipping container). For example, mixed-integer problem solving is one representative example of a conventional algorithm that may deal with hard constraints. Black box optimization solutions may require a problem to be described algorithmically, generally without reference to contextual details of specific domains. Thus, these systems may not easily integrate user-defined knowledge or detect or account for dynamic changes. Additionally, black box optimization algorithms may not be directly accessible or viewable to all users.